﻿
//using Microsoft.AspNetCore.Mvc;
//using Microsoft.Extensions.Logging;
//using Microsoft.Extensions.Options;
//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Runtime.InteropServices;
//using System.Text;
//using System.Text.Encodings.Web;
//using System.Text.Json;
//using System.Threading.Tasks;
//using WeChatBotSDK.Enums;
//using WeChatBotSDK.Interfaces;
//using WeChatBotSDK.Models;
//using WeChatBotSDK.Models.EventCallback;

//namespace 微信机器人服务.Controllers
//{
//    [ApiController]
//    [Route("api/[controller]")]
//    public class WechatCallbackController : ControllerBase
//    {
//        private readonly ILogger<WechatCallbackController> _logger;
//        private readonly IWeChatApiService _weChatApiService;
//        JsonSerializerOptions options = new JsonSerializerOptions
//        {
//            //WriteIndented = true, // 格式化 JSON 输出
//            Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping // 禁止转义中文字符
//        };
//        public WechatCallbackController(ILogger<WechatCallbackController> logger, IWeChatApiService weChatApiService)
//        {
//            _logger = logger;
//            _weChatApiService = weChatApiService;
//        }
//        /// <summary>
//        /// 接收微信回调消息
//        /// </summary>
//        /// <param name="callback">微信事件回调数据</param>
//        /// <returns>处理结果</returns>
//        [HttpPost("ReceiveCallback")]
//        public async Task<IActionResult> ReceiveCallback([FromBody] EventCallback<object> callback) 
//        {
//            if (callback == null || callback.Event == WechatEventType.Unknown || callback.Data == null)
//            {
//                _logger.LogWarning("收到无效的回调数据或未知事件类型");
//                return BadRequest("无效的回调数据或未知事件类型");
//            }
            
//            try
//            {
//                switch (callback.Event)
//                {
//                    case WechatEventType.InjectionSuccess:
//                        HandleInjectionSuccess(callback.Data as EventData<InjectionSuccessEventData>);
//                        break;

//                    case WechatEventType.TransferEvent:
//                        HandleTransferEvent(callback.Data as EventData<TransferEventData>);
//                        break;

//                    case WechatEventType.PaymentEvent:
//                        HandlePaymentEvent(callback.Data as EventData<PaymentEventData>);
//                        break;

//                    case WechatEventType.GroupMessageReceived:
//                    case WechatEventType.SelfMessageSent:
//                    case WechatEventType.PrivateMessageReceived:
                        
//                        var res = JsonSerializer.Deserialize<EventData<WeChatMessageData>>(JsonSerializer.Serialize(callback.Data, options));
//                        if (res?.Data.MsgType==MsgType.Text)
//                        {
//                            WeChatResponse<object>? 发送结果;
//                            if (res.Data.Msg == "图片")
//                            {
//                                发送结果 = await _weChatApiService.SendImageAsync(res.Wxid, res.Data.FromWxid, @"C:\Users\Administrator\Desktop\服务器IP.jpg");
//                            }
//                            else if (res.Data.Msg == "文件")
//                            {
//                                发送结果 = await _weChatApiService.SendFileAsync(res.Wxid, res.Data.FromWxid, @"C:\Users\Administrator\Desktop\新建文本文档.txt");
//                            }
//                            else
//                            {
//                                 发送结果 = await _weChatApiService.SendTextMessageAsync(res.Wxid, res.Data.FromWxid, res.Data.Msg);
//                            }

//                            if (发送结果.Code == 200)
//                            {
//                                _logger.LogInformation($"发送图片成功，好友 WXID: {res.Data.FromWxid}, 消息内容: {res.Data.Msg}");
//                            }
//                            else
//                            {
//                                _logger.LogInformation($"发送图片失败，好友 WXID: {res.Data.FromWxid}, 消息内容:  {res.Data.Msg}");
//                            }
//                        }



//                        HandlePrivateMessage(res);
//                        break;

//                    case WechatEventType.FriendRequest:
//                        HandleFriendRequest(callback.Data as EventData<FriendRequestData>);
//                        break;

//                    case WechatEventType.AccountChangeEvent:
//                         var res_微信用户信息= JsonSerializer.Deserialize<WeChatUserInfoData>(JsonSerializer.Serialize(callback.Data, options));
//                        if (res_微信用户信息.Type==OnlineStatus.Online)
//                        {
//                            var friendList = await _weChatApiService.GetFriendListAsync(res_微信用户信息.Wxid);
//                            var firstWxid = friendList.Result.FirstOrDefault()?.Wxid;
//                            if (firstWxid != null)
//                            {
//                                var 结果 = await _weChatApiService.SendTextMessageAsync(res_微信用户信息.Wxid, firstWxid, $"[{res_微信用户信息.Nick}]上线了！[呲牙]");

//                                if (结果.Code == 200)
//                                {
//                                    _logger.LogInformation($"发送消息成功，好友 WXID: {firstWxid}, 消息内容: [{res_微信用户信息.Nick}]上线了！[呲牙]");
//                                }
//                                else
//                                {
//                                    _logger.LogInformation($"发送消息失败，好友 WXID: {firstWxid}, 消息内容: [{res_微信用户信息.Nick}]上线了！[呲牙]");
//                                }

//                            }

//                        }
//                        HandleAccountChangeEvent(res_微信用户信息);
//                        break;

//                    default:
//                        _logger.LogWarning("收到暂不支持的事件类型");
//                        return BadRequest("暂不支持的事件类型");
//                }
//            }
//            catch (Exception ex)
//            {
//                _logger.LogError(ex, "处理微信回调消息时发生错误");
//                return StatusCode(500, "服务器内部错误");
//            }

//            return Ok("回调数据已处理");
//        }

//        // 各类事件处理方法示例
//        private void HandleInjectionSuccess(EventData<InjectionSuccessEventData> data)
//        {
//            if (data != null && data.Data != null)
//            {
//                _logger.LogInformation($"注入成功，监听端口: {data.Data.Port}, PID: {data.Data.PID}");
//            }
//        }

//        private void HandleTransferEvent(EventData<TransferEventData> data)
//        {
//            if (data != null && data.Data != null)
//            {
//                _logger.LogInformation($"转账事件，金额: {data.Data.Money}, 转账备注: {data.Data.Memo}");
//            }
//        }

//        private void HandlePaymentEvent(EventData<PaymentEventData> data)
//        {
//            if (data != null && data.Data != null)
//            {
//                _logger.LogInformation($"支付事件，消息内容: {data.Data.Msg}");
//            }
//        }

//        private void HandlePrivateMessage(EventData<WeChatMessageData> data)
//        {
//            if (data != null && data.Data != null)
//            {
//                _logger.LogInformation($"收到消息，好友 WXID: {data.Data.FromWxid}, 消息内容: {data.Data.Msg}");
//            }
//        }

//        private void HandleFriendRequest(EventData<FriendRequestData> data)
//        {
//            if (data != null && data.Data != null)
//            {
//                _logger.LogInformation($"好友请求，微信 ID: {data.Data.Wxid}, 验证信息: {data.Data.Content}");
//            }
//        }

//        private void HandleAccountChangeEvent(WeChatUserInfoData data)
//        {
//            if (data != null)
//            {
//                _logger.LogInformation($"账号变动事件，账号信息: {data.Nick}");
//            }
//        }
//    }
//}
